package cn.siriusbot.siriuspro.bot.api;

import cn.siriusbot.siriuspro.bot.api.pojo.message.Message;
import cn.siriusbot.siriuspro.bot.api.pojo.message.MessageKeyboard;
import cn.siriusbot.siriuspro.bot.api.pojo.message.MessageMarkdown;
import cn.siriusbot.siriuspro.bot.api.tuple.Tuple;

public interface C2CApi {

    /**
     * 用于向 QQ用户发送消息
     *
     * @param bot_id  传入机器人ID
     * @param user_id 用户ID
     * @param content 要发送的消息内容
     * @param msg_id  消息ID
     * @return 消息对象
     */

    Tuple<Message, String> sendMessage
    (

            String bot_id,
            String user_id,
            String content,
            String msg_id
    );


    /**
     * 用于发送QQ好友发送富文本消息
     *
     * @param bot_id       机器人ID
     * @param user_id      用户ID
     * @param content      消息内容
     * @param event_id     事件ID
     * @param file_type    文件类型
     * @param url          文件地址
     * @param srv_send_msg 服务器消息
     * @return 消息对象
     */
    Tuple<Message, String> sendRichMediaMessage
    (
            String bot_id,

            String user_id,

            String content,

            String event_id,

            Integer file_type,

            String url,

            Boolean srv_send_msg
    );

    /**
     * 发送markdown消息(富文本)
     * 要求操作人在该子频道具有发送消息和对应 Markdown 模版 的权限。
     * 调用前开发者需要先在“QQ开放平台-机器人-发布设置-消息模板”入口为对应机器人创建申请Markdown消息模板，得到模板 id ，在请求时填在对应的 markdown.template_id 上。
     * 模板参数暂不支持数组。
     * 消息体中所包含的URL需要报备并通过验证，方可使用。
     * 如传入event_id和msg_id其中一个，此条消息视为被动消息
     *
     * @param bot_id   传入机器人ID
     * @param user_id  用户ID
     * @param msg_id   消息id
     * @param event_id 事件ID
     * @param markdown markdown对象
     * @param keyboard 按钮对象
     * @return 返回消息对象
     */
    Tuple<Message, String> sendMarkdownMessage
    (
            String bot_id,

            String user_id,

            String msg_id,

            String event_id,

            MessageMarkdown markdown,

            MessageKeyboard keyboard
    );

}
